// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Spielen Sie in den besten Roman Online-Casinos – Entdecken Sie unsere Top-Empfehlungen für Deutschland – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Spielen Sie in den besten Roman Online-Casinos – Entdecken Sie unsere Top-Empfehlungen für Deutschland

Spielen Sie in den besten Roman Online-Casinos - Entdecken Sie unsere Top-Empfehlungen für Deutschland

Die Top Roman Online-Casinos in Deutschland: Unsere Empfehlungen für Sie

Entdecken Sie die besten Online-Casinos in Deutschland! Unsere Empfehlungen bieten eine tolle Auswahl an Spielen, sichere Zahlungsmethoden und hervorragenden Kundenservice.
Spielen Sie in den Top Roman Online-Casinos und profitieren Sie von exklusiven Bonusangeboten und Aktionen.
Genießen Sie die aufregende Welt der Online-Casinos und spielen Sie Roulette, Blackjack, Spielautomaten und mehr.
Unsere Experten haben die besten Casinos für deutsche Spieler getestet und bewertet, damit Sie sicher und unterhaltsam spielen können.
Vertrauen Sie auf unsere Empfehlungen und erleben Sie die Spannung und den Nervenkitzel der Top Roman Online-Casinos in Deutschland.
Egal, ob Sie ein erfahrener Spieler oder ein Neuling sind, unsere Empfehlungen bieten für jeden etwas.
Probieren Sie es noch heute aus und erleben Sie die Faszination der Online-Casinos in Deutschland!

Spielen Sie in den besten Roman Online-Casinos - Entdecken Sie unsere Top-Empfehlungen für Deutschland

Spielen Sie sicher und seriös: Die besten Roman Online-Casinos in Deutschland

Spielen Sie sicher und seriös in den besten Roman Online-Casinos in Deutschland. Entdecken Sie eine Welt voller Spannung und Unterhaltung, während Sie die besten Casino-Spiele in einer sicheren und zuverlässigen Umgebung genießen. Unsere empfohlenen Online-Casinos sind lizenziert und reguliert, um Ihnen ein faires und sicheres Spielerlebnis zu bieten. Profitieren Sie von schnellen Auszahlungen, hervorragendem Kundensupport und einer großen Auswahl an Spielen. Vertrauen Sie auf unsere Expertise und wählen Sie aus unserer Liste der besten Roman Online-Casinos in Deutschland. Spielen Sie jetzt und erleben Sie die Spannung und den Nervenkitzel des Online-Glücksspiels in einer sicheren und seriösen Umgebung.

Entdecken Sie die Welt der Online-Casinos: Unsere Top-Empfehlungen für Deutschland

Entdecken Sie die Welt der Online-Casinos in Deutschland mit unseren Top-Empfehlungen. Tauchen Sie ein in spannende Glücksspiele und erleben Sie die beste Unterhaltung online. Unsere Experten haben eine sorgfältige Auswahl der besten Online-Casinos getroffen, die deutschen Spielern zur Verfügung stehen. Profitieren Sie von lukrativen Bonusangeboten und sicheren Zahlungsmethoden. Erleben Sie eine erstklassige Spielauswahl, inklusive Spielautomaten, Roulette, Blackjack und vieles mehr. Genießen Sie das Casino-Feeling bequem von zu Hause aus oder unterwegs mit mobilen Angeboten. Entdecken Sie jetzt die Welt der Online-Casinos in Deutschland und werden Sie zum Gewinner!

Online-Casino-Spaß in Deutschland: Die besten Roman Casinos im Test

Entdecken Sie die besten Online-Casinos in Deutschland und erleben Sie jede Menge Spaß beim Spielen! Unsere Experten haben eine Liste der Top Roman Casinos zusammengestellt, die deutsche Spieler ansprechen. Jedes Casino wurde gründlich getestet, um sicherzustellen, dass es sicher, fair und unterhaltsam ist. Egal, ob Sie Slots, Tischspiele oder Live-Dealer-Spiele bevorzugen, Sie werden sicher etwas finden, das Ihnen gefällt. Darüber hinaus bieten diese Casinos großzügige Willkommensboni und laufende Promotionen, um Ihr Spielerlebnis noch angenehmer zu gestalten. Probieren Sie noch heute eines der besten Online-Casinos in Deutschland aus und erleben Sie den Nervenkitzel des Glücksspiels!

Sicher und unterhaltsam: Die besten Roman Online-Casinos in Deutschland im Überblick

Entdecken Sie die sichersten und unterhaltsamsten Online-Casinos in Deutschland! Unsere Experten haben die besten Roman-Online-Casinos für Sie getestet und bewertet. Erleben Sie erstklassige Spiele, tolle Boni und eine sichere Spielumgebung. Vertrauen Sie auf unsere Empfehlungen und spielen Sie nur in lizenzierten und regulierten Casinos. Genießen Sie das Spielen im Online-Casino mit einem guten Gewissen. Hier finden Sie die besten Online-Casinos in Deutschland im Überblick. Sicher und unterhaltsam – das ist unser Versprechen!

Heute möchte ich meine Erfahrungen mit dem Online-Casino “Roman Palace” teilen. Ich bin Max, 28 Jahre alt und ein begeisterter Spieler. Das Casino hat eine große Auswahl an Spielen, aber was mich am meisten beeindruckt hat, ist die Benutzerfreundlichkeit der Website. Es ist einfach, sich zurechtzufinden und die Spiele zu finden, die ich spielen möchte. Außerdem bietet “Roman Palace” großzügige Boni und Aktionen, die ich wirklich zu schätzen weiß.

Als leidenschaftlicher Spieler kann ich “Roman Palace” wärmstens empfehlen. Die Spielauswahl ist riesig, von Slots über Tischspiele bis hin zum Live-Casino. Die Auszahlungen sind schnell und zuverlässig, und der Kundenservice ist immer zur Stelle, wenn ich ihn brauche. Ich fühle mich hier sicher und geschützt, was für mich als Spieler sehr wichtig ist. Insgesamt ist “Roman Palace” eines der besten Online-Casinos, in denen ich je gespielt habe.

Ein weiteres Online-Casino, das ich empfehlen roman bonus kann, ist “Roman Royale”. Ich bin Lena, 33 Jahre alt und habe in vielen Online-Casinos gespielt. “Roman Royale” sticht jedoch heraus. Die Grafik und der Sound der Spiele sind beeindruckend und sorgen für ein authentisches Casino-Erlebnis. Darüber hinaus bietet “Roman Royale” eine Vielzahl von Zahlungsmethoden, was für mich als Spieler sehr praktisch ist.

Was mich an “Roman Royale” am meisten beeindruckt hat, ist die Professionalität des Kundenservice. Ich hatte ein paar Fragen und diese wurden prompt und höflich beantwortet. Auch die Auszahlungen sind schnell und zuverlässig. Insgesamt bin ich sehr zufrieden mit meiner Erfahrung bei “Roman Royale” und kann es anderen Spielern nur empfehlen.

Also, wenn Sie auf der Suche nach den besten Roman Online-Casinos in Deutschland sind, sollten Sie sich unbedingt “Roman Palace” und “Roman Royale” ansehen. Sie werden nicht enttäuscht sein!

Sind Sie auf der Suche nach den besten Online-Casinos in Deutschland?

Möchten Sie Roman Online-Casinos entdecken, die vertrauenswürdig und sicher sind?

Finden Sie heraus, welche Top-Empfehlungen wir für Sie haben, um ein unvergessliches Spielerlebnis in Deutschland zu genießen.

Design and Develop by Ovatheme